جزوه · چالش اول فصل چهارم · دستورات کاربردی و Wildcardها ← بازگشت به فهرست
📘 چالش اول فصل چهارم دستورات کاربردی و Wildcardها
📅 تاریخ: چهارشنبه، ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی)
🔍 قبل از شروع، یه مثال ساده:

فرض کن توی یه انبار پر از جعبه هستی و می‌خوای فقط جعبه‌هایی که اسمشون با حرف خاصی شروع میشه یا پسوند خاصی دارن رو پیدا کنی. توی لینوکس، با استفاده از کاراکترهای ویژه (Wildcards) می‌تونی دقیقاً همین کار رو بکنی! اینجا با سه تا از پرکاربردترین‌هاش آشنا میشیم.

▍ مقدمه

در این چالش، با استفاده از دستورات پایه و کاراکترهای ویژه (Wildcards)، فایل‌ها و دایرکتوری‌ها را مدیریت می‌کنیم. ابزارهای اصلی این جلسه عبارتند از:

▍ کاراکترهای ویژه (Wildcards)

⭐ ستاره (*) — هر تعداد کاراکتر

* به معنای صفر یا چند کاراکتر است.

┌──(ya3in㉿kali)-[~/test] └─$ ls *.txt cake.txt carmelPie.txt carrotcake.txt

توضیح: *.txt همه فایل‌هایی که به .txt ختم می‌شوند را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~/test] └─$ ls *.sh carmelCake.sh

توضیح: *.sh همه فایل‌هایی که به .sh ختم می‌شوند (اسکریپت‌های شل) را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~/test] └─$ ls c*.*sh carmelCake.sh

توضیح: c*.*sh فایل‌هایی که با c شروع می‌شوند، یک نقطه دارند و به sh ختم می‌شوند.

❓ علامت سوال (?) — یک کاراکتر

? به معنای دقیقاً یک کاراکتر است.

┌──(ya3in㉿kali)-[~/test] └─$ ls b?t bat bet bit bot

توضیح: b?t فایل‌هایی که با b شروع می‌شوند، یک کاراکتر دلخواه در وسط و با t ختم می‌شوند.

┌──(ya3in㉿kali)-[~/test] └─$ ls b??t beat bunt

توضیح: b??t فایل‌هایی که با b شروع می‌شوند، دو کاراکتر دلخواه در وسط و با t ختم می‌شوند.

🔲 کروشه ([]) — مجموعه کاراکترها

[] به معنای یکی از کاراکترهای داخل کروشه است.

┌──(ya3in㉿kali)-[~/test] └─$ ls b[eio]t bet bit bot

توضیح: b[eio]t فایل‌هایی که با b شروع می‌شوند، کاراکتر وسط یکی از e، i یا o باشد و با t ختم می‌شوند.

┌──(ya3in㉿kali)-[~/test] └─$ ls b[eil]t bet bit

توضیح: b[eil]t فایل‌هایی که با b شروع می‌شوند، کاراکتر وسط یکی از e، i یا l باشد و با t ختم می‌شوند. (bit و bet وجود دارند، اما bot وجود ندارد چون o در کروشه نیست).

▍ ترکیب Wildcardها

می‌توانید چندین Wildcard را با هم ترکیب کنید تا جستجوی دقیق‌تری داشته باشید.

┌──(ya3in㉿kali)-[~/test] └─$ ls c*.*sh carmelCake.sh

توضیح: ترکیب * و . و *sh برای پیدا کردن فایل‌هایی که با c شروع می‌شوند و پسوند .sh دارند.

▍ دستور cd با Wildcard

┌──(ya3in㉿kali)-[~] └─$ cd te?? ┌──(ya3in㉿kali)-[~/test]

توضیح: cd te?? به دایرکتوری می‌رود که نام آن با te شروع می‌شود و دو کاراکتر بعدی دلخواه است (مثلاً test).

⚠️ توجه:

اگر چندین دایرکتوری با این الگو وجود داشته باشد، cd به اولین مورد می‌رود. برای انتخاب دقیق‌تر، از الگوی مناسب‌تر استفاده کنید.

▍ جمع‌بندی Wildcardها

Wildcard معنی مثال خروجی
* صفر یا چند کاراکتر *.txt همه فایل‌های با پسوند .txt
? دقیقاً یک کاراکتر b?t bat, bet, bit, bot
[] یکی از کاراکترهای داخل کروشه b[eio]t bet, bit, bot
🧪 چالش اول: تمرین برای تثبیت

حالا نوبت شماست! فرض کنید در دایرکتوری ~/Desktop هستید و فایل‌های زیر را دارید:

  • file1.txt
  • file2.txt
  • file3.log
  • file4.sh
  • myfile.txt
  • myfile.sh

با استفاده از Wildcardها، دستورات زیر را بنویسید:

  1. نمایش همه فایل‌های .txt.
  2. نمایش فایل‌هایی که با file شروع می‌شوند.
  3. نمایش فایل‌هایی که با file شروع می‌شوند و پسوند .txt دارند.
  4. نمایش فایل‌هایی که دقیقاً ۵ کاراکتر دارند (قبل از پسوند).
✅ پاسخ‌های چالش:
  • ls *.txt → همه فایل‌های .txt
  • ls file* → فایل‌هایی که با file شروع می‌شوند
  • ls file*.txt → فایل‌هایی که با file شروع و به .txt ختم می‌شوند
  • ls ?????.txt → فایل‌هایی با ۵ کاراکتر قبل از .txt